#ifndef __MYTLV__
#define __MYTLV__

#include <mysql/field_types.h>
typedef enum
{
    // 命令类型
    CD = 1 << 0,     // 进入对应目录
    LS = 1 << 1,     // 列出相应目录文件
    PWD = 1 << 2,    // 显示目前所在路径
    MKDIR = 1 << 3,  // 创建目录文件
    RMDIR = 1 << 4,  // 删除目录文件
    PUTS = 1 << 5,   // 将本地文件上传至服务器
    GETS = 1 << 6,   // 下载服务器文件到本地
    REMOVE = 1 << 7, // 删除服务器上的文件

    // 控制字段
    HASH = 1 << 8,    // 盐值, 哈希
    OVER = 1 << 9,    // 文件传输完成
    IS_OK = 1 << 10,  // 表示前一个指令执行结果
    LOGIN = 1 << 11,  // 表示登录指令
    RIGIST = 1 << 12, // 注册新用户
    TOKEN = 1 << 13,  // 第一次收到
    RES = 1 << 20 ,    // 消息提示
    SEFIE =1<<21
} cmdstat_t;



typedef struct client_s
{
    char Name[1024];// 用户名
    char Password[1024];// 用户密码
}client_t;

// 登录成功后每次传输附带数据
typedef struct extra_data{
    int cur_dir_id;
    char user[1024];
    char token[64];
}extra_data_t;


typedef struct train_s
{

    cmdstat_t cmdstat;// 存放命令和状态
    int length;        // 火车头，存放传输数据的长度
    char data[4096];// 存放每次传输的数据
}train_t;

typedef struct file_mes{
    int file_len;
    char file_name[64];
    char file_hash[64];
}file_mes_t ;


// 普通指令收发
int recv_train(int fd,train_t *ptrain);

int send_train(int fd,const train_t *ptrain);

int send_info(int fd,char mes[]);

int checkToken(train_t *tdata_get);



#endif // !__NETDISK_H__
